package com.base.project.filters.utils;

import com.alibaba.fastjson.JSONObject;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.SortedMap;

/**
 * @ProjectName: project
 * @Package: com.base.project.filters.utils
 * @Description: java类作用描述
 * @Author: Z.G.C
 * @CreateDate: 2020/5/15 4:13 PM
 * @UpdateUser: Z.G.C
 * @UpdateDate: 2020/5/15 4:13 PM
 * @UpdateRemark: The modified content
 * @Version: 1.0
 * <p>Copyright: Copyright (c) 2020</p>
 */
public class SignUtil {
    /**
     * @param params
     *            所有的请求参数都会在这里进行排序加密
     * @return 验证签名结果
     */
    public static boolean verifySign(SortedMap<String, Object> params) {
        String urlSign = (String) params.get("sign");
        if (StringUtils.isEmpty(urlSign)) {
            return false;
        }
        // 把参数加密
        String paramsSign = getParamsSign(params);
        return !StringUtils.isEmpty(paramsSign) && urlSign.equals(paramsSign);
    }

    /**
     * @param params
     *            所有的请求参数都会在这里进行排序加密
     * @return 得到签名
     */
    public static String getParamsSign(SortedMap<String, Object> params) {
        // 要先去掉 Url 里的 Sign
        params.remove("sign");
        String paramsJsonStr = JSONObject.toJSONString(params);
        return DigestUtils.md5DigestAsHex(paramsJsonStr.getBytes()).toUpperCase();
    }
}
